Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Relay][QNN] Support for non scalar zero points in qnn.conv2d #8620

Merged
merged 11 commits into from
Aug 7, 2021

Conversation

jwfromm
Copy link
Contributor

@jwfromm jwfromm commented Aug 2, 2021

This PR adds support for non-scalar zero point values in qnn conv2d operators and also allows the kernel zero points to be channel-wise. This is a needed change to support ONNX's ConvInteger nodes which typically treat zero points as expressions and are often generated using OnnxRuntimes quantization feature, that produces channel wise zero points. Although the rest of the qnn framework doesn't yet support non constant zero points, this is a good start that improves our onnx coverage considerably.

I also found that although qnn supported lowering uint8 convolution and dense to cuda, the dp4a instruction actually only supports int8 datatypes, an error exposed by the onnx frontend tests. I added some legalization logic to convert uint8 to int8 when the target is cuda.

@jwfromm
Copy link
Contributor Author

jwfromm commented Aug 2, 2021

@anijain2305 @mbrookhart what do you guys think of this change?

Copy link
Contributor

@mbrookhart mbrookhart left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@masahi masahi merged commit 11238b5 into apache:main Aug 7, 2021
mehrdadh pushed a commit to mehrdadh/tvm that referenced this pull request Aug 11, 2021
…#8620)

* conv2d working, fixing conv2d_depthwise

* Depthwise conv2d working.

* Make convinteger work on cuda.

* Simplify code and add tests.

* Formatting.

* Fixed fallback broadcasting.

* Fix fallback broadcasting.

* Formatting.

* Fix lint

* Merge with new test parameterization.
ylc pushed a commit to ylc/tvm that referenced this pull request Sep 29, 2021
…#8620)

* conv2d working, fixing conv2d_depthwise

* Depthwise conv2d working.

* Make convinteger work on cuda.

* Simplify code and add tests.

* Formatting.

* Fixed fallback broadcasting.

* Fix fallback broadcasting.

* Formatting.

* Fix lint

* Merge with new test parameterization.
ylc pushed a commit to ylc/tvm that referenced this pull request Jan 13, 2022
…#8620)

* conv2d working, fixing conv2d_depthwise

* Depthwise conv2d working.

* Make convinteger work on cuda.

* Simplify code and add tests.

* Formatting.

* Fixed fallback broadcasting.

* Fix fallback broadcasting.

* Formatting.

* Fix lint

* Merge with new test parameterization.
@jwfromm jwfromm deleted the qnn_checkpoint branch April 12, 2023 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants